package utils

import (
  "github.com/gin-gonic/gin"
  uuid "github.com/satori/go.uuid"
  "livefind/global"
  systemReq "livefind/model/system/request"
)

// 从Gin的Context中获取从jwt解析出来的用户ID
func GetUserID(c *gin.Context) uint {
  if claims, exists := c.Get("claims"); !exists {
    global.GVA_LOG.Error("从Gin的Context中获取从jwt解析出来的用户ID失败, 请检查路由是否使用jwt中间件!")
    return 0
  } else {
    waitUse := claims.(*systemReq.CustomClaims)
    return waitUse.ID
  }
}

// 从Gin的Context中获取从jwt解析出来的用户UUID
func GetUserUuid(c *gin.Context) uuid.UUID {
  if claims, exists := c.Get("claims"); !exists {
    global.GVA_LOG.Error("从Gin的Context中获取从jwt解析出来的用户UUID失败, 请检查路由是否使用jwt中间件!")
    return uuid.UUID{}
  } else {
    waitUse := claims.(*systemReq.CustomClaims)
    return waitUse.UUID
  }
}

// 从Gin的Context中获取从jwt解析出来的用户角色id
func GetUserAuthorityId(c *gin.Context) string {
  if claims, exists := c.Get("claims"); !exists {
    global.GVA_LOG.Error("从Gin的Context中获取从jwt解析出来的用户UUID失败, 请检查路由是否使用jwt中间件!")
    return ""
  } else {
    waitUse := claims.(*systemReq.CustomClaims)
    return waitUse.AuthorityId
  }
}

// 从Gin的Context中获取从jwt解析出来的用户角色id
func GetUserInfo(c *gin.Context) *systemReq.CustomClaims {
  if claims, exists := c.Get("claims"); !exists {
    global.GVA_LOG.Error("从Gin的Context中获取从jwt解析出来的用户UUID失败, 请检查路由是否使用jwt中间件!")
    return nil
  } else {
    waitUse := claims.(*systemReq.CustomClaims)
    return waitUse
  }
}
